// C++ 兼容C
#include <stdio.h>

//int main()
//{
//	printf("hello world\n");
//
//	return 0;
//}


//#include <iostream>
//
//int main()
//{                    //函数头
//    //函数体
//    using namespace std;        //using 编译指令
//    cout << "Hello, World!"    //输出“Hello,World!”
//        << endl;              //换行
//
//    return 0;                  //返回语句，结束main()函数
//}

//#include <stdio.h>
//#include <stdlib.h>
//
//int rand = 10;
//// 命名冲突
//// 程序员  和   库
//// 程序员  和   程序员
//
//int main()
//{
//	printf("%d\n", rand);
//	return 0;
//}

#include <stdio.h>
#include <stdlib.h>

// 域
 //:: - 域作用限定符
// 全局域
// 局部域
// 命名空间域
// 类域

//int main()
//{
//	int x = 1;
//
//	printf("%d\n", x);
//	printf("%d\n", ::x);
//	return 0;
//}



namespace a1
{
	int rand = 0;
	int x = 0;

	int Add(int left, int right)
	{
		return left + right;
	}

	struct Node
	{
		struct Node* next;
		int val;
	};
}

namespace a2
{
	int x = 1;
}


// 域
//:: - 域作用限定符
// 全局域  生命周期 访问
// 局部域  生命周期
// 命名空间域
// 类域

// 编译器 搜索原则：
// 不指定域：1、先局部域 2、全局域
// 指定域：3、如果指定了，直接去指定域搜索

int main()
{
	printf("%d\n", a1::x);
	printf("%d\n", a1::x);
	//printf("%d\n", a2::y);
	printf("%p\n", rand);

	printf("%d\n", a1::Add(1, 2));
	struct a1::Node  phead;

	return 0;
}